<?php

/**
 * agendado actions.
 *
 * @package    cronos-doctrine
 * @subpackage agendado
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class agendadoActions extends sfActions
{
  public function executeIndex(sfWebRequest $request)
  {
    $this->agendados = Doctrine_Core::getTable('Agendado')
      ->createQuery('a')
      ->execute();

  }
  
  public function executeFormDetalle(sfWebRequest $request)
  {
    $this->idAgendado   =   $request->getParameter('idAgendado');
    $agendado           =   new Agendado();
    $this->agendado     =   $agendado->getAgendadoDetalle($this->idAgendado);
    
    $this->notice       =   $request->getParameter('notice');
    $this->idUser       = $this->agendado->getUsuarioId();
    
    
    $this->permisos = $this->getUser()->getGuardUser()->getPermissions();
    
    
    
  }
  
  
  
  public function executeAgendado(sfWebRequest $request)
  {
      
        if(!$this->getUser()->setAttribute('urlagendado'))
        $this->getUser()->setAttribute('urlagendado', $_SERVER['HTTP_REFERER']);
       
       
        //Capturo Usuario a quien se va agendar
        $this->idUser             = $request->getParameter("idUser");
        $servicio_id              = $request->getParameter('servicio_id');
        $this->servicio_id        = $servicio_id;
        $camioneta_id             = $request->getParameter('camioneta_id');
        $this->opVista            = $request->getParameter('opVista');
        $this->ejecucionProceso   = $request->getParameter('ejecucionProceso');
        $this->parent             = $request->getParameter('parent');
        
        
        if ($request->getParameter('idUser')){
        //Usuario a quien se le va agendar el servicio
        $usuario = new Usuario();
        $this->usuario = $usuario->getUsuarioDepuracion($this->idUser);
        }
        
        
        
            //si tiene valor enviado 
            $this->fechaCalendario = $request->getParameter('fechaCalendario');
            //en caso de que no se envie valor!!
            if(empty($this->fechaCalendario)){
                
                $this->fechaCalendario = '';
                $this->fechaCalendario = strtotime ( '+1 day' , strtotime ( date('Y-m-d') ) ) ;
                $this->fechaCalendario = date ( 'Y-m-d' , $this->fechaCalendario );
                $this->tiempoInicial = '09:00';
                
            }else{
               //si tiene valor enviado 
            $this->fechaCalendario= explode(" ",$request->getParameter('fechaCalendario'));
            $this->tiempoInicial  = $this->fechaCalendario[1];
            $this->fechaCalendario= $this->fechaCalendario[0]; 
                
                
            }
        
            
         if(empty($this->tiempoDuracion)) $this->tiempoDuracion = 60;
         
         
         
        //Servicio en el cual se va Agendar s
        $servicio = new Categoria();
        $this->servicio = $servicio->getCategoriaPorId($servicio_id);
        
        $this->cronogramas      = "";
        $this->Date_Info        = "";
        $this->arrayCamioneta   = "";
        $this->date_sugerido    = "";
        if(empty($this->camioneta_id))      $this->camioneta_id = 1;
        

            
        
            //------------Camionetas del Sitema
            $camioneta = new Camioneta();
            if ($this->servicio_id>=1)
            $camionetas = $camioneta->getCamioneta_por_servicio($this->servicio_id);
            else $camionetas = $camioneta->getCamionetas();
            
             
            $this->select_camionetas ='<select id="spamovil" onchange="agendadoCalendario();" class="dataCliente">';
                foreach ($camionetas as $camion){
                    ${'camion'.$camion->getId()} = $camion->getNombre(); 
                    
                    if($camion->getId() == $this->camioneta_id){
                        $select = "selected";
                    }else {
                        $select = "";
                    }
                    $this->select_camionetas .="<option value=".$camion->getId()." ".$select.">".$camion->getNombre()."</option>";
                } 
            $this->select_camionetas .='</select>';
            
        
//------------Calendario de rutas
    if($this->idUser){            
            
            $cronogramaCamioneta = new CronogramaCamioneta();
            $cronogramas = $cronogramaCamioneta->getCronogramaServicio($this->usuario->getParroquia()->getZonaId(),$servicio_id);
            
            $semanas = new Semana();
            $semanas = $semanas->getCantidad();        
            
            foreach ($cronogramas as $cronograma){

                $timestamp1 = mktime(0,0,0,date('1'),date('05'),date('2013'));


                while(date('w',$timestamp1)!=1){
                    $timestamp1 -= 3600;
                }    

                $semana = $cronograma->getSemana()->getNumero();
                $diaSemana = $cronograma->getDiaSemana()->getId();    

                $can_dias = ($semana*7)+($diaSemana-1);


                $primeroEnero = $timestamp1 + 24*60*60*$can_dias-1;

                $this->Date_Info .= date('Y',$primeroEnero)."".date('m',$primeroEnero)."".date('d',$primeroEnero).": { klass: 'servicio".$this->servicio_id."', tooltip: '".${'camion'.$cronograma->getCamionetaId()}." Recorre por esta Ruta' },\n";

                

                for($i=1; $i<13; $i++){
                    $can2 = (7*($semanas*$i))+$can_dias;
                    $consecutivo = $timestamp1 + 24*60*60*$can2-1;
                    
                    $this->Date_Info .= date('Y',$consecutivo)."".date('m',$consecutivo)."".date('d',$consecutivo).": { klass: 'servicio".$this->servicio_id."', tooltip: '".${'camion'.$cronograma->getCamionetaId()}." Recorre por esta Ruta' },\n";
                    
                }

            }
            
            
            
    }      

            
            $this->idAgendado = $request->getParameter('idAgendado');
            
            
            $meses = array('','Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic');
            
            
            if($request->getParameter('idAgendado')){
            
            $agendado = new Agendado();
            $agendado1 = $agendado->getAgendadoId($request->getParameter('idAgendado'));    
            
            $this->form = new AgendadoForm($agendado1);
            $this->formDescuento = new DescuentoForm();
            
            
            $fecha = explode(' ', $agendado1->getFechaAsig());
            $this->fechaCalendario= $fecha[0];
            $fecha = explode(":",$fecha[1]);
            $this->tiempoInicial  = $fecha[0].':'.$fecha[1];
            $this->tiempoDuracion = $agendado1->getDuracion();
            $this->camioneta_id = $agendado1->getCamionetaId();
            
            $this->formDescuento->setWidget('monto', new sfWidgetFormInput(array(),array('value' => $agendado1->getDescuento()->getMonto())));
            $this->formDescuento->setWidget('nota', new sfWidgetFormTextarea(array('default' => $agendado1->getDescuento()->getNota()),array()));
            $this->formDescuento->setWidget('agente_id', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()->getAttribute('agente_user'))));
            $this->formDescuento->setWidget('is_aprobado', new sfWidgetFormInputHidden(array(),array('value' => 1)));
            
            $this->idAgendado = $request->getParameter('idAgendado');
            
            $this->form->setWidget('servicio_tipo_id', new sfWidgetFormInputHidden(array(),array('value' => $this->servicio_id)));
            

            $this->form->setWidget('agendado_status_id', new sfWidgetFormInputHidden(array(),array('value' => 3 )));
            $this->form->setWidget('usuario_id', new sfWidgetFormInputHidden(array(),array('value' => $this->idUser)));
            $this->form->setWidget('agente_id', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()->getAttribute('agente_user'))));
            $this->form->setWidget('camioneta_id', new sfWidgetFormInputHidden(array(),array('value' => $this->camioneta_id)));
            $this->form->setWidget('cod_agendado', new sfWidgetFormInputHidden(array(),array('value' => $this->idUser)));
            $this->form->setWidget('fecha_asig', new sfWidgetFormInputHidden(array(),array('value' => $this->fechaCalendario." ".$this->tiempoInicial)));
            $this->form->setWidget('duracion', new sfWidgetFormInputHidden(array(),array('value' => $this->tiempoDuracion)));
            $this->form->setWidget('confirmacion_id', new sfWidgetFormInputHidden(array(),array('value' => 1)));
            $this->form->setWidget('servicio_tipo_id', new sfWidgetFormInputHidden(array(),array('value' => $this->servicio_id )));
            $this->form->setWidget('cantidad_mascota', new sfWidgetFormInputHidden(array(),array('value' => '0' )));
            
            
            
            
            
            
            
            }else{

//------------Calendario de rutas FIN
        
            $this->form = new AgendadoForm(); 
            $this->formDescuento = new DescuentoForm();
            
            $this->form->setWidget('servicio_tipo_id', new sfWidgetFormInputHidden(array(),array('value' => $this->servicio_id)));
            //$this->form->setWidget('parroquia_id', new sfWidgetFormInputHidden(array(),array('value' => $this->parroquia_id)));
            //$this->form->setWidget('zona_id', new sfWidgetFormInputHidden(array(),array('value' => $this->zona_id)));
            $this->form->setWidget('agendado_status_id', new sfWidgetFormInputHidden(array(),array('value' => 1 )));
            $this->form->setWidget('usuario_id', new sfWidgetFormInputHidden(array(),array('value' => $this->idUser)));
            $this->form->setWidget('agente_id', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()->getAttribute('agente_user'))));
            $this->form->setWidget('camioneta_id', new sfWidgetFormInputHidden(array(),array('value' => $this->camioneta_id)));
            $this->form->setWidget('cod_agendado', new sfWidgetFormInputHidden(array(),array('value' => $this->idUser)));
            $this->form->setWidget('fecha_asig', new sfWidgetFormInputHidden(array(),array('value' => $this->fechaCalendario." ".$this->tiempoInicial)));
            $this->form->setWidget('duracion', new sfWidgetFormInputHidden(array(),array('value' => $this->tiempoDuracion)));
            $this->form->setWidget('confirmacion_id', new sfWidgetFormInputHidden(array(),array('value' => 1)));
            $this->form->setWidget('servicio_tipo_id', new sfWidgetFormInputHidden(array(),array('value' => $this->servicio_id )));
            $this->form->setWidget('cantidad_mascota', new sfWidgetFormInputHidden(array(),array('value' => '0' )));
            
            
            $this->form->setWidget('bitacora', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()." [ ".date("d-").$meses[intval(date("m"))].date("-Y").' a las '.date("g:i a")." ] ")));
                
                
            $this->formDescuento->setWidget('agente_id', new sfWidgetFormInputHidden(array(),array('value' => $this->getUser()->getAttribute('agente_user'))));
            $this->formDescuento->setWidget('is_aprobado', new sfWidgetFormInputHidden(array(),array('value' => 1)));
    
    
            }
            
            
    
  }
  
  public function executeVista(sfWebRequest $request)
  {
      
    $this->fechaCalendario = $request->getParameter('fechaCalendario');
    
    if(empty($this->fechaCalendario)){
        $this->fechaCalendario = date ('Y-m-d');
        $this->tiempoInicial = '09:00'; 
    }
    
    
  }
  
  public function executeRuta(sfWebRequest $request)
  {
      
        $this->fechaCalendario  = $request->getParameter('fechaCalendario');
        $this->camioneta_id     = $request->getParameter('camioneta_id');
        $this->fechaRuta        = $request->getParameter('fechaCalendario');
        


        if(empty($this->fechaCalendario)){
            $this->fechaCalendario = date ('Y-m-d');
            $this->tiempoInicial = '09:00'; 
        }

        if(!empty($this->camioneta_id)){
            
            $clientes         = new Agendado();
            $this->clientes   = $clientes->getAgendadoRuta($this->camioneta_id, $this->fechaRuta);
         
            $this->servicioId       = 1;
        }
            
    
  }

  
  
  public function executePista(sfWebRequest $request)
    {
      
      
            
        
            $this->servicio_id    = $request->getParameter('servicio_id');  
            $this->tiempoDuracion = $request->getParameter('tiempoDuracion');
            $this->fechaCalendario= $request->getParameter('fechaCalendario');
            $this->camioneta_id   = $request->getParameter('camioneta_id');
            $this->opVista        = $request->getParameter('opVista');
            $this->idAgendado     = $request->getParameter('idAgendado');
            $this->idUser         = $request->getParameter("idUser");
            
            //en caso de que no se envie valor!!
            if(empty($this->fechaCalendario)){
                
                $this->fechaCalendario = strtotime ( '+1 day' , strtotime ( date('Y-m-d') ) ) ;
                $this->fechaCalendario = date ( 'Y-m-d' , $this->fechaCalendario );
                $this->tiempoInicial = '09:00';
                
                
            }else{
                //si tiene valor enviado 
                $this->fechaCalendario= explode(" ",$request->getParameter('fechaCalendario')." ");
                $this->tiempoInicial  = $this->fechaCalendario[1];
                $this->fechaCalendario= $this->fechaCalendario[0];
            }
            
            
            if(empty($this->tiempoDuracion))    $this->tiempoDuracion = 60;
            if(empty($this->camioneta_id))      $this->camioneta_id = 1;
            
            
            
            //Agendados de los clientes en este dia
            $agendas = new Agendado();
            $this->agendas = $agendas->getAgendadoUsuario($this->fechaCalendario);
            
            //Camionetas del Sitema
            $camioneta = new Camioneta();
            
            if ($this->servicio_id>=1)
            $this->camionetas = $camioneta->getCamioneta_por_servicio($this->servicio_id);
            else $this->camionetas = $camioneta->getCamionetas();
            
            //estatus del Agendado
            $agendadoStatus = new AgendadoStatus();
            $this->agendadoStatus = $agendadoStatus->getAgendadoStatus();
            
            //estatus de Confirmacion
            $confirmacionStatus = new Confirmacion();
            $this->confirmacionStatus = $confirmacionStatus->getConfirmacions();
            
            
            
            
        
    }
  
    
  public function executeCitasAutomaticas(sfWebRequest $request){
    
      
        $this->fechaCalendario = $request->getParameter('fechaCalendario');
        $this->idUser          = $request->getParameter("idUser");
        
        //4813
        
        
        $this->result = Doctrine_Query::create()
                        ->from('UsuarioHasAgendado us')
                        ->where('us.fecha_asig ="'.$this->fechaCalendario.'"')
                        ->addWhere('us.usuario_id<>"'.$this->idUser.'"')
                        ->addWhere('us.reagendado=1')
                        ->execute();

        
        
    }
            
            
    
  public function executeNew(sfWebRequest $request)
  {
        $this->form = new AgendadoForm();
            
  }

  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));
    
    
    
    //Accedo al formulario
    $agendadoForm = new AgendadoForm;
    $agendadoForm = $request->getParameter($agendadoForm->getName());
    
    $datoFecha        = explode(" ",$agendadoForm['fecha_asig']);
    
    $horaInicial      = $datoFecha[1];
    $intervalo        = $agendadoForm['duracion'];
    $camioneta_id     = $agendadoForm['camioneta_id'];
    $idUser           = $agendadoForm['usuario_id'];
    $servicio_id      = $request->getParameter('servicio_id');
    
    
        //Suma de los datos para procesar si los horarios estan Disponibles para el Servicio
        $intervalo = $intervalo - 30;
        $hora = explode(":",$horaInicial);
        $hora = date("G:i" , mktime($hora[0],$hora[1]+$intervalo));
        $hora = explode(":",$hora);
                if($hora[0]<=9) $hora[0] = "0".intval($hora[0]);
        $horaFinal = $hora[0].":".$hora[1];
        
        
      $fechaInicial     = $datoFecha[0].' '.$horaInicial;
      $fechaFinal       = $datoFecha[0].' '.$horaFinal.':00';
      
      //$fechaInicial     = $fechaInicial.'<br>';
      
      
            
            $this->form = new AgendadoForm();
    
            $formDescuento = new DescuentoForm();
            $descuento = $request->getParameter($formDescuento->getName());
            if($descuento['monto']){
                //echo $descuento['monto'];
                $this->formDescuento = new DescuentoForm();
                $this->processForm($request, $this->form, $idUser, $this->formDescuento);
            }else {
                
                $this->processForm($request, $this->form, $idUser);
            }
          
       
      $this->setTemplate('edit');
        
        
  }

  protected function processForm(sfWebRequest $request, sfForm $form, $idUser, sfForm $formDescuento = null )
  {

    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    
    
    if($formDescuento){
        $formDescuento->bind($request->getParameter($formDescuento->getName()), $request->getFiles($formDescuento->getName()));
        $valido = $formDescuento->isValid();
    }else {
        $valido = true;
    }
    
    if ($form->isValid() AND $valido)
    {
        
        try {
            
            $notice = $form->getObject()->isNew() ? 'Se Agendo correctamente.' : 'Se Reagendo correctamente.';
            $op     = $form->getObject()->isNew() ? '1' : '2';
            $descuentoViejo = null;
            
        
            $agendado = $form->save();
            
            
            if($formDescuento) {
                $descuento = $formDescuento->save();
                if($descuento){
                    $agendado->setDescuentoId($descuento);
                    $agendado->save();
                    if($descuentoViejo){
                        $descuentoViejo->delete();
                    }
                    
                }
            }else {
                if(!$form->getObject()->isNew() and $agendado->getDescuento()->getId()){
                    $descuentoViejo = $agendado->getDescuento();
                    $agendado->setDescuento(NULL);
                    $agendado->save();
                    $descuentoViejo->delete();
                }
            }

            $serv = new Servicio();
            $servs =  $serv->getServicioAgendado($agendado->getId());

            $servicios = $request->getParameter($form->getName());

            $mascotaTamanobd = new Mascota();
            $productoPrecioU = new ProductoPrecio();
            
            
            
            foreach ($servs as $position => $service){

                $mas = new MascotaHasServicio();
                $mas->delServicio($service->getId());
                

                if($servicios['servicios']){
                    if(isset($servicios['servicios'][$position])){
                    foreach ($servicios['servicios'][$position] as $ser){

                        if(is_array($ser)){                    
                            foreach ($ser as $mascotas){
                                
                                //Tamano de la mascota
                                $mascotaTamano = $mascotaTamanobd->getTamano($mascotas);
                                $productoPrecio = $productoPrecioU->getPrecioProductoFinal($service->getProductoId(), $mascotaTamano->getTamanox());
            
                                $mascotaServicio = new MascotaHasServicio();
                                $mascotaServicio->setEmpresaId($this->getUser()->getAttribute('agente_user_empresa_id'));
                                $mascotaServicio->setServicioId($service->getId());
                                $mascotaServicio->setAgendadoId($agendado->getId());
                                $mascotaServicio->setMascotaId($mascotas);
                                $mascotaServicio->setRazaId($mascotaTamano->getRazax());
                                $mascotaServicio->setTamanoId($mascotaTamano->getTamanox());
                                $mascotaServicio->setProductoId($service->getProductoId());
                                $mascotaServicio->setPrecioUnitario($productoPrecio->getPrecio());
                                $mascotaServicio->save();                        
                                
                            }
                        }
                    }
                    }
                }
                
                
                
            }
            
            
            if($idUser){
             $estrategiaHasUsuario = new EstrategiaHasUsuario();              
             $estrategiaHasUsuario = $estrategiaHasUsuario->getEstrategiaHasUsuarioId($idUser, date('Y-m-d'));
             $estrategiaHasUsuario->execute();
            }
            
            
            
            
        } catch (Doctrine_Validator_Exception $e) {
            $errorStack = $form->getObject()->getErrorStack();
            $message = get_class($form->getObject()) . ' has ' . count($errorStack) . " field" . (count($errorStack) > 1 ?  's' : null) . " with validation errors: ";
            foreach ($errorStack as $field => $errors) {
                $message .= "$field (" . implode(", ", $errors) . "), ";
            }
            $message = trim($message, ', ');

            $this->getUser()->setFlash('error', $message);
            return sfView::SUCCESS;
        }    
        
        
        if($op=='1'){
            if($this->getUser()->getAttribute('urlagendado'))
                $this->redirect($this->getUser()->getAttribute('urlagendado'));
            else
                $this->redirect('dashboard/index');  
            
            
        }else{
            
            $this->redirect('agendado/vista?fechaCalendario='.$agendado->getFechaAsig());
        }
        
        
    }
    
    
    
    
    
    
  }
  public function executeEdit(sfWebRequest $request)
  {
    $this->forward404Unless($agendado = Doctrine_Core::getTable('Agendado')->find(array($request->getParameter('id'))), sprintf('Object agendado does not exist (%s).', $request->getParameter('id')));
    $this->form = new AgendadoForm($agendado);
    
  }

  public function executeUpdate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($agendado = Doctrine_Core::getTable('Agendado')->find(array($request->getParameter('id'))), sprintf('Object agendado does not exist (%s).', $request->getParameter('id')));
    $this->form = new AgendadoForm($agendado);

    
    //Accedo al formulario
    $agendadoForm = $this->form;
    $agendadoForm = $request->getParameter($agendadoForm->getName());
    
    $datoFecha        = explode(" ",$agendadoForm['fecha_asig']);
    
    $horaInicial      = $datoFecha[1];
    $intervalo        = $agendadoForm['duracion'];
    $camioneta_id     = $agendadoForm['camioneta_id'];
    $idUser           = $agendadoForm['usuario_id'];
    $idAgendado       = $agendadoForm['id'];
    $servicio_id      = $request->getParameter('servicio_id');
    
    
    
        //Suma de los datos para procesar si los horarios estan Disponibles para el Servicio
        $intervalo = $intervalo - 30;
        $hora = explode(":",$horaInicial);
        $hora = date("G:i" , mktime($hora[0],$hora[1]+$intervalo));
        $hora = explode(":",$hora);
                if($hora[0]<=9) $hora[0] = "0".intval($hora[0]);
        $horaFinal = $hora[0].":".$hora[1];
        
        
        
      $fechaInicial     = $datoFecha[0].' '.$horaInicial;
      $fechaFinal       = $datoFecha[0].' '.$horaFinal.':00';
      
      $agendados = new Agendado();
      
            
            $formDescuento = new DescuentoForm();
            $descuento = $request->getParameter($formDescuento->getName());
            if($descuento['monto']){
                $this->formDescuento = new DescuentoForm();
                $this->processForm($request, $this->form, $idUser, $this->formDescuento);
                
                
            }else {
                $this->processForm($request, $this->form, $idUser);
                
            }
         
    
    
    
    $this->setTemplate('edit');
        
        
  }

  public function executeDelete(sfWebRequest $request)
  {
    
        $this->forward404Unless($agendado = Doctrine_Core::getTable('Agendado')->find(array($request->getParameter('idAgendado'))), sprintf('Object agendado does not exist (%s).', $request->getParameter('idAgendado')));
        
        $agendado->setAgendadoStatusId(4);
        $agendado->save();
        $this->redirect('agendado/formDetalle?idAgendado='.$request->getParameter('idAgendado').'&notice=1');
        
     
  }
  
  
  public function executeConfirmacion(sfWebRequest $request)
  {
     
        $this->forward404Unless($agendado = Doctrine_Core::getTable('Agendado')->find(array($request->getParameter('idAgendado'))), sprintf('Object agendado does not exist (%s).', $request->getParameter('idAgendado')));
        $agendado->setConfirmacionId(3);
        $agendado->save();
        
        
    
     
    $this->redirect('agendado/formDetalle?idAgendado='.$request->getParameter('idAgendado').'&notice=1');
     
     
  }
  
  public function executeRealizado(sfWebRequest $request)
  {
     
        $this->forward404Unless($agendado = Doctrine_Core::getTable('Agendado')->find(array($request->getParameter('idAgendado'))), sprintf('Object agendado does not exist (%s).', $request->getParameter('idAgendado')));
          
        
        $agendado->setAgendadoStatusId(5);
        $agendado->save();
        
        $ultimo_servicio = Doctrine_Query::create()
                        ->set('ll.ultimo_servicio', "'".$agendado->getFechaAsig()."'")
                        ->update('LlamadaServicio ll')
                        ->where('ll.usuario_id=?',$agendado->getUsuarioId())
                        ->addWhere('ll.categoria_id=?',$agendado->getServicioTipoId())
                        ->execute();
        
        /*
        foreach($agendado->getServicio() as $servicio) {
            $llamadaServicio = new LlamadaServicio();
            $llServicio = $llamadaServicio->getLlamadaServicio($agendado->getUsuarioId(), $servicio->getServicioTipoId());
             if ($llServicio){
                 $periodicidad = $llServicio->getPeriodicidad();
                 $servicio->guardarPeriodicidad($periodicidad);
            }
        }
         * 
         */
        
        
        
        
    
     
    $this->redirect('agendado/formDetalle?idAgendado='.$request->getParameter('idAgendado').'&notice=1');
     
     
  }

  
  
  public function executeAddSerForm(sfWebRequest $request)
  {
  
          
     $this->forward404unless($request->isXmlHttpRequest());
      
      $id                       = $request->getParameter('id');
      $number                   = intval($request->getParameter("num"));
      $idUser                   = $request->getParameter("idUser");
      $opcion                   = $request->getParameter("opcion");
      $this->servicio_id        = $request->getParameter("servicio_id");
      
      

      $deta = $agendado = Doctrine_Core::getTable('Agendado')->find($id);
      if(!is_null($deta)){
            $form = new AgendadoForm($agendado);
            
      }else{
            $form = new AgendadoForm();
      }
      
      
      $form->getObject()->setUsuarioId($idUser);

      
 
       
        //Captura de valores enviandos por Jquery
        $cantidad_Array                 = explode(',',$request->getParameter("cantidad"));
        $servicio_tipo_id_Array         = explode(',',$request->getParameter("servicio_tipo_id"));
        $categoria_id_Array             = explode(',',$request->getParameter("categoria_id"));
        $marca_id_Array                 = explode(',',$request->getParameter("marca_id"));
        $producto_id_Array              = explode(',',$request->getParameter("producto_id"));
        $tamano_id_Array                = explode(',',$request->getParameter("tamano_id"));
        $presentacion_id_Array          = explode(',',$request->getParameter("presentacion_id"));
        $nota_Array                     = explode(',',$request->getParameter("nota"));
        
        //Contador de la cantidad de mascotas
        $mascota_list_Array             = explode(',',$request->getParameter("mascota_list"));
        $mascota_id_Array               = explode(',',$request->getParameter("mascota_id"));
        $mascota_tam_Array              = explode(',',$request->getParameter("mascota_tam"));
     
        
        
        //Declaro la longitud del Array Servicio
        $longitudCont                   = $request->getParameter("longitudCont");
        
         
      
      if($opcion=="new"){
        
          
        
          
        $cantidad                       = 0;
        $servicio_tipo_id               = $this->servicio_id;
        $categoria_id                   = 0;
        $marca_id                       = 0;
        $producto_id                    = 0;
        $marca_id                       = 0;
        $tamano_id                      = 0;
        $presentacion_id                = 0;
        $nota                           = "";

      
       if($this->servicio_id == 1) $categoria_id = 4;
       
       
       $form->addServicios($number, $cantidad, $servicio_tipo_id, $categoria_id, $producto_id, $marca_id, $tamano_id, $presentacion_id, $nota, $mascota_list_Array, $mascota_tam_Array);
        
       
        return $this->renderPartial('addSer',array('form' => $form, 'num' => $number));
        
      }elseif($opcion=="update"){
          
        //Captura de valores enviandos por Jquery del objeto
        $cantidad                       = $cantidad_Array[$number];
        if(empty($servicio_tipo_id_Array[$number])) { $servicio_tipo_id = 0; }else{ $servicio_tipo_id = $servicio_tipo_id_Array[$number]; }                   
        if(empty($categoria_id_Array[$number])) { $categoria_id = 0; }else{ $categoria_id = $categoria_id_Array[$number]; }
        if(empty($marca_id_Array[$number])) { $marca_id = 0; }else{ $marca_id = $marca_id_Array[$number]; }
        if(empty($producto_id_Array[$number])) { $producto_id = 0; }else{ $producto_id = $producto_id_Array[$number]; }
        if(empty($tamano_id_Array[$number])) { $tamano_id = 0; }else{ $tamano_id = $tamano_id_Array[$number]; }
        if(empty($presentacion_id_Array[$number])) { $presentacion_id = 0; }else{ $presentacion_id = $presentacion_id_Array[$number]; }
        
        if(empty($nota_Array[$number])) { $nota = ""; }else{ $nota = $nota_Array[$number]; }
        
        
        $form->addServicios($number, $cantidad, $servicio_tipo_id, $categoria_id, $producto_id,$marca_id, $tamano_id, $presentacion_id, $nota, $mascota_list_Array, $mascota_tam_Array);
        
        
        
        return $this->renderPartial('addSer',array('form' => $form, 'num' => $number,'mascota_list'=>$mascota_list_Array));
        
        
     }
  }
  
  
  
  
  public function executeDelSerForm(sfWebRequest $request)
  {
    $this->forward404Unless($servicio = Doctrine_Core::getTable('Servicio')->find(array($request->getParameter('id'))), sprintf('Object galeria does not exist (%s).', $request->getParameter('id')));
    
    try {
           $servicio->delete();
           $this->getUser()->setFlash('notice', 'El Item fué removido exitosamente.'); 
          
      } catch (Doctrine_Exception $e) {
          $this->getUser()->setFlash('error', 'No se puedo eliminar el item, existen referencias a esta entrada.'); 
          
      }
  }
  
  
  
  public function executeAgendadoVerificar(sfWebRequest $request)
  {
      
      $servicio_id      = $request->getParameter('servicio_id');
      $usuario_id       = $request->getParameter('usuario_id');
      $fechaInicial     = $request->getParameter('fechaCalendario');
      $intervalo        = $request->getParameter('tiempoDuracion')-30;
      $camioneta_id     = $request->getParameter('camioneta_id');
      $idAgendado       = $request->getParameter('idAgendado');
      $fechaFinal       = date('Y-m-d H:i:s', strtotime("$fechaInicial + $intervalo minutes") );
      
      $fecha            = explode(" ",$fechaInicial);
      
      
      $agendados = new Agendado();
      if($agendados->getAgendadosVerificar($fechaInicial,$fechaFinal,$camioneta_id,$idAgendado)){
        
          echo  'El horario se encuentra ocupado!';
        
      }elseif($agendados->getAgendadosVerificarServicio($usuario_id,$servicio_id,$fecha[0],$idAgendado)){
          
        echo  'El cliente tiene un servicio asignado para este dia';  
        
      }
      
      
      
      exit;
   
      
  }
  
  public function executeEliminarMascota(sfWebRequest $request)
  {
      
      $mascota_id       = $request->getParameter('mascota_id');
      $agendado_id      = $request->getParameter('idAgendado');
      
      
      //recorre mascota_has_servicio//
      $mascotaServicio = new MascotaHasServicio();
      $mascotaServicio->delServicioMascota($agendado_id,$mascota_id);
      $mascotaServicios = $mascotaServicio->getMascotaServicio($agendado_id);
      
      $suma_agendado = 0;
      
      foreach ($mascotaServicios as $mascotaServicio){ 
         
          $mascotaServicio->updateServicio($mascotaServicio->getCantidadx(),$mascotaServicio->getPrecio(),$mascotaServicio->getServiciox());
          $suma_agendado += $mascotaServicio->getPrecio();
          
          
      }
      
      $cantidada_agendado = $mascotaServicio->getSumaMascotas($agendado_id);
      $cantidada_agendado = $cantidada_agendado->getCantidadx();
      
      $mascotaServicio->updateAgendado($cantidada_agendado,$suma_agendado,$agendado_id);
      
      
      if($request->getParameter('idUser')){
      $this->redirect('dashboard/cliente?idUser='.$request->getParameter('idUser').'&idAgendado='.$request->getParameter('idAgendado')); 
      }else{
      $this->redirect('agendado/formDetalle?idAgendado='.$request->getParameter('idAgendado'));
      }
      
      
  }

}
